From: Florian Müllner Date: Fri, 13 May 2022 12:30:00 +0000 (+0200) Subject: lockScreen: Extend modal grab to entire uiGroup X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~461^2^2~349 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3e7ce18dcf596871a89f4befa9123e2a1030ae93;p=gnome-shell.git lockScreen: Extend modal grab to entire uiGroup Main.pushModal() used to ensure a compositor grab, but didn't take an input grab. That changed when porting to ClutterGrab, so by limiting the grab to the shield/dialog, it is no longer possible to access top bar menus when the screen is locked. To fix that, take the grab on the whole uiGroup so that the top bar is included. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5470 Part-of: --- diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index a78172047..be6a72190 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -196,7 +196,7 @@ var ScreenShield = class { if (this._isModal) return true; - let grab = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN }); + let grab = Main.pushModal(Main.uiGroup, { actionMode: Shell.ActionMode.LOCK_SCREEN }); // We expect at least a keyboard grab here this._isModal = (grab.get_seat_state() & Clutter.GrabState.KEYBOARD) !== 0; diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index bf81343b9..24c81609c 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -873,7 +873,7 @@ var UnlockDialog = GObject.registerClass({ timestamp, actionMode: Shell.ActionMode.UNLOCK_SCREEN, }; - let grab = Main.pushModal(this, modalParams); + let grab = Main.pushModal(Main.uiGroup, modalParams); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return false;